
var express = require("express");
var path = require("path");
var fsp = require("fs/promises");

// // 用于接收post数据  并对数据做处理(第三方 运行依赖)  => express已经内置
// var bodyParser = require("body-parser");  // 老版本

var app = express(); //创建服务器 


// 中间件: 在请求-响应周期中有权访问请求对象 （）、响应对象 （） 和函数的函数
// app.use(callback)  中间件函数接收一个回调函数
// callback  中间件函数,(回调函数有三个参数req,res,next), 
//        req  请求对象
//        res  响应对象
//        next  函数 => 继续执行中间函数中的下一个

// 中间件函数可以执行以下任务：
//     执行任何代码。
//     对请求和响应对象进行更改。
//     结束请求-响应周期。  res.end
//     调用堆栈中的下一个中间件。

// 注意: 
// 每次客户端向服务器发送请求时,会依次经过每一个中间件 (前提:中间件中调用next())
// 结束响应一般不和next同时出现, 响应结束后继续向后走没有意义)




// app.use(express.static(path.join(__dirname, "../site")));
// app.use(express.json());//用于解析application/json
// app.use(express.urlencoded({ extended: true }));   //用于解析application/x-www-urlencoded

app.use(function (req, res, next) {
    if (req.url != "/favicon.ico") { // 排除 favicon.ico
        console.log("接收到来自客户端的请求:", 1);
        next();
    } else {
        res.end();
    }
})

app.use(function (req, res, next) {
    console.log("接收到来自客户端的请求:", 2);
    next();
})

app.use(function (req, res, next) {
    console.log("接收到来自客户端的请求:", 3);
    res.end("hello world");   // 结束响应(一般不和next同时出现, 响应结束后继续向后走没有意义)
})





// 监听端口
app.listen(3000, () => {
    console.log("服务启动=>  http://localhost:3000");
})




